package com.minsf.rpc.model;

import cn.hutool.core.util.StrUtil;
import lombok.Data;

/**
 * @Description
 * @Author minify
 * @Date 2024/3/27 21:47
 * @Project sf-rpc
 */
@Data
public class ServiceMetaInfo {

    /**
     * 服务器名称
     */
    private String serviceName;

    private String serviceHost = "http://127.0.0.1";

    private Integer servicePort;

    /**
     * 服务器版本
     */
    private String serviceVersion;

    /**
     * 服务地址
     */
    private String serviceAddress;

    /**
     * 服务分组（暂未实现）
     */
    private String serviceGroup = "default";

    /**
     * 获取服务键名
     */
    public String getServiceKey() {
        // 后续可扩展服务分组
        return String.format("%s:%s:%s", serviceName, serviceVersion, serviceGroup);
    }

    /**
     * 获取服务注册节点键名
     */
    public String getServiceNodeKey() {
        return String.format("%s/%s",getServiceKey(), serviceAddress);
    }

    /**
     * 获得完整服务调用地址
     */
    public String getServiceAddress() {
        if (!StrUtil.contains(serviceHost, "http")) {
            return String.format("http://%s:%s", serviceHost, servicePort);
        }

        return String.format("%s:%s", serviceHost, servicePort);
    }

}
